Portable Firefox Launcher 1.1.2
===============================
Copyright (C) 2004-2005 John T. Haller
Portions Copyright 2004 mai9

Website: http://portableapps.com/portable_firefox

This software is OSI Certified Open Source Software.
OSI Certified is a certification mark of the Open Source Initiative.

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

ABOUT PORTABLE FIREFOX
======================
The Portable Firefox Launcher allows you to run Firefox from a removable drive whose letter changes as you move it to another computer.  The browser and the profile can be entirely self-contained on the drive and then used on any Windows computer.  Specific configuration changes are made to the chrome.rdf so that your extensions will still work as the drive letter changes.


LICENSE
=======
This code is released under the GPL.  Within the PortableFirefoxCode directory you will find the code (PortableFirefox.nsi) as well as the full GPL license (License.txt).  If you use the launcher or code, please give proper and prominent attribution.


INSTALLATION / DIRECTORY STRUCTURE
==================================
By default, the program expects one of these directory structures:

-\ <--- Directory with PortableFirefox.exe
  +\firefox\
  +\profile\
  +\plugins\ (optional)
  +\appdata\ (optional)
  +\userprofile\ (optional)

OR

-\ <--- Directory with PortableFirefox.exe
  +\PortableFirefox\
    +\firefox\
    +\profile\
    +\plugins\ (optional)
    +\userprofile\ (optional)
    +\appdata\ (optional)

OR

-\ <--- Directory with PortableFirefox.exe
  +\PortableApps\
    +\PortableFirefox\
      +\firefox\
      +\profile\
      +\plugins\ (optional)
      +\appdata\ (optional)
      +\userprofile\ (optional)

OR

-\ <--- Directory with PortableFirefox.exe (PortableApps, for instance)
  +\Apps\
    +\PortableFirefox\
      +\firefox\
      +\plugins\ (optional)
  +\Data\
    +\PortableFirefox\
      +\profile\
      +\appdata\ (optional)
      +\userprofile\ (optional)

OR

-\ <--- Directory with PortableFirefox.exe (PortableApps, for instance)
  +\Apps\
    +\PortableFirefox\
      +\firefox\
      +\plugins\ (optional)
  +\Data\
    +\PortableFirefox\
      +\profile\
    +\UserProfile\
      +\Application Data\

It can be used in other directory configurations by including the PortableFirefox.ini file in the same directory as PortableFirefox.exe and configuring it as details in the INI file section below.  The INI file may also be placed in a subdirectory of the directory containing PortableFirefox.exe called PortableFirefox or 2 directories deep in PortableApps\PortableFirefox or Data\PortableFirefox.  All paths in the INI should remain relative to the EXE and not the INI.


PORTABLEFIREFOX.INI CONFIGURATION
=================================
The Portable Firefox Launcher will look for an ini file called PortableFirefox.ini within its directory.  If you are happy with the default options, it is not necessary, though.  The INI file is formatted as follows:

[PortableFirefox]
FirefoxDirectory=firefox
ProfileDrectory=profile
PluginsDirectory=plugins
UserProfileDirectory=
AdditionalParameters=
AllowMultipleInstances=false
SkipChromeFix=false
SkipCompregFix=false
WaitForFirefox=false
FirefoxExecutable=firefox.exe
DisableSplashScreen=false

The FirefoxDirectory, ProfileDrectory, PluginsDirectory, AppDataDirectory and UserProfileDirectory entries should be set to the *relative* path to the directories containing firefox.exe, your profile, your plugins, etc. from the current directory.  All must be a subdirectory (or multiple subdirectories) of the directory containing PortableFirefox.exe.  The default entries for these are described in the installation section above.  The AppDataDirectory and UserProfileDirectory are used instead of the local User and Application Data directories contained in Documents and Settings.  A blank entry for PluginsDirectory, AppDataDirectory or UserProfileDirectory will disable that feature.

The AdditionalParameters entry allows you to pass additional commandline parameter entries to firefox.exe.  Whatever you enter here will be appended to the call to firefox.exe.

The AllowMultipleInstances entry will allow Portable Firefox to run alongside your regular local copy of Firefox if you set it to true (lowercase).  The default is false.

The SkipChromeFix entry allows you to set Portable Firefox not to adjust the chrome.rdf for extension compatibility on launch.  It is useful if you are only using Portable Firefox on computers you control and are able to have the drive letter set the same each time as Portable Firefox will launch more quickly.  Set it to true (lowercase) to skip chrome.rdf processing.  The default is false.

The SkipCompregFix entry allows you to set Portable Firefox not to adjust the component registry (compreg.dat) for certain extension compatibility on launch.  It is useful if you are only using Portable Firefox on computers you control and are able to have the drive letter set the same each time or if you are not using extensions which make use of the component registry (like Forecast Fox or the Mozilla Calendar) as Portable Firefox will launch more quickly.  Set it to true (lowercase) to skip chrome.rdf processing.  The default is false.

The WaitForFirefox entry allows you to set the Portable Firefox Launcher to wait for Firefox to close before it closes.  This option is mainly of use when PortableFirefox.exe is called by another program that awaits it's conclusion to perform a task.  It is useful when used with the PortableFirefoxLive launcher.

The FirefoxExecutable entry allows you to set the Portable Firefox Launcher to use an alternate EXE call to launch firefox.  This is helpful if you are using a machine that is set to deny firefox.exe from running.  You'll need to rename the firefox.exe file and then enter the name you gave it on the firefoxexecutable= line of the INI.

The DisableSplashScreen entry allows you to run the Portable Firefox Launcher without the splash screen showing up.  The default is false.


PROGRAM HISTORY / ABOUT THE AUTHORS
===================================
This launcher contains elements from multiple sources.  It began as a batch file launcher written by myself (John T. Haller) and posted to the mozillaZine.org thread about running Firefox from a USB key.  tracon later released a launcher called fflaunch which I enhanced and re-released as Portable Firefox.  mai9 later improved on fflaunch's techniques and released it as Free The Fox.  Multiple suggestions back and forth as well as improvements from mai9, myself and others lead to the launcher we have today.  This most recent version adds some of mai9's methods for running multiple copies of Firefox and my methods for allowing the code to be run from anywhere on first launch (as opposed to a specific directory), pass in commandline options, run without an ini file and allow the use of profiles from local installations.


CURRENT LIMITATIONS
===================
SOME THEMES FAIL - Some themes may not work correctly with Portable Firefox

LOCAL FILES CREATED - A directory (%userprofile%\Application Data\Mozilla\Firefox) is created on the local machine (if Firefox is not installed locally) and a pluginreg.dat file is created within it. This is a limitation of Firefox itself.  If you set the UserProfile directory within the INI file, this will not happen.

INCOMPATIBLE EXTENSIONS - Certain extensions use additional local files or prefs.js to store information, neither of which are handled by the Portable Firefox launcher when moving between machines.

NO PORTABLE JAVA - Sun's Java VM needs to be installed locally as it makes a slew of registry entries, etc. There is no way to make it portable at present, so you will only be able to use Java-enabled sites on machines that have the Sun Java VM installed locally.

WRITE ACCESS REQUIRED - Both the Firefox directory and the profile directory must be writeable on the USB drive. Drives with a writable switch can not be in read-only mode.